CodeIgniter-এ URI Routing হলো এমন একটি পদ্ধতি, যা ব্যবহারকারীর URL রিকোয়েস্টকে প্রাসঙ্গিক কন্ট্রোলার এবং মেথডের সাথে সংযুক্ত করে। এটি আপনাকে কাস্টম URL গঠন তৈরি করতে এবং ডিফল্ট রাউটিং পরিবর্তন করতে সহায়তা করে।
CodeIgniter-এ URI Routing ব্যবহৃত হয়:
ডিফল্টভাবে, CodeIgniter এর রাউটিং সিস্টেম app/Config/Routes.php
ফাইলে কনফিগার করা হয়।
CodeIgniter একটি ডিফল্ট রাউট প্রদান করে, যা app/Controllers/Home.php
এর index() মেথডে পয়েন্ট করে। এটি Routes.php
ফাইলে এভাবে নির্ধারিত থাকে:
$routes->get('/', 'Home::index');
এটি ব্রাউজারে http://localhost/your_project/
লোড করলে চালু হয়।
Custom Route তৈরি করতে Routes.php
ফাইলে নিচের কোড যোগ করুন:
$routes->get('products', 'ProductController::index');
এটি ব্রাউজারের http://localhost/your_project/products
URL-কে ProductController
এর index()
মেথডে রিডাইরেক্ট করবে।
Parameter সহ কাস্টম রাউট তৈরি করতে:
$routes->get('product/(:num)', 'ProductController::show/$1');
এখানে:
(:num)
: কেবল সংখ্যাসূচক মান গ্রহণ করবে।$1
: URL এর প্রথম প্যারামিটার।উদাহরণ:
http://localhost/your_project/product/5
Controller মেথড:
public function show($id)
{
echo "Product ID: " . $id;
}
যদি একাধিক প্যারামিটার প্রয়োজন হয়:
$routes->get('user/(:num)/order/(:num)', 'UserController::order/$1/$2');
এখানে:
$1
: প্রথম প্যারামিটার (user ID)।$2
: দ্বিতীয় প্যারামিটার (order ID)।উদাহরণ:
http://localhost/your_project/user/2/order/15
Controller মেথড:
public function order($userId, $orderId)
{
echo "User ID: " . $userId . ", Order ID: " . $orderId;
}
CodeIgniter বিভিন্ন ধরনের প্লেসহোল্ডার ব্যবহার করতে দেয়:
(:num)
: শুধুমাত্র সংখ্যা গ্রহণ করবে।(:alpha)
: শুধুমাত্র অক্ষর গ্রহণ করবে।(:alphanum)
: অক্ষর এবং সংখ্যা উভয় গ্রহণ করবে।(:any)
: যেকোনো কিছু গ্রহণ করবে (অক্ষর, সংখ্যা বা অন্যান্য)।(:segment)
: URL এর একটি সেগমেন্ট গ্রহণ করবে (এটি /
ব্যতীত যেকোনো কিছু)।GET, POST, PUT, DELETE ইত্যাদি HTTP মেথডের ভিত্তিতে কাস্টম রাউট তৈরি করা যায়।
$routes->post('submit-form', 'FormController::submit');
এটি শুধুমাত্র POST রিকোয়েস্ট গ্রহণ করবে।
$routes->put('update-product/(:num)', 'ProductController::update/$1');
এটি PUT রিকোয়েস্ট গ্রহণ করবে।
Route এর জন্য নাম নির্ধারণ করে ব্যবহার করা যায়। এটি বড় অ্যাপ্লিকেশনের জন্য উপকারী।
$routes->get('profile', 'UserController::profile', ['as' => 'user_profile']);
এখন আপনি এই রাউটকে এভাবে ব্যবহার করতে পারেন:
echo route_to('user_profile');
Route গুলোকে একটি গ্রুপে সংগঠিত করা যায়। উদাহরণ:
$routes->group('admin', function($routes) {
$routes->get('dashboard', 'AdminController::dashboard');
$routes->get('users', 'AdminController::users');
});
এখন:
http://localhost/your_project/admin/dashboard
http://localhost/your_project/admin/users
Route ফাইলে একটি fallback route নির্ধারণ করা যায়, যা রাউট না পাওয়া গেলে কাজ করে।
$routes->set404Override(function() {
echo "Page not found!";
});
$routes->get('/', 'HomeController::index');
$routes->get('products', 'ProductController::index');
$routes->get('product/(:num)', 'ProductController::show/$1');
$routes->post('product/add', 'ProductController::add');
$routes->put('product/update/(:num)', 'ProductController::update/$1');
$routes->delete('product/delete/(:num)', 'ProductController::delete/$1');
$routes->group('admin', function($routes) {
$routes->get('dashboard', 'AdminController::dashboard');
$routes->get('users', 'AdminController::users');
});
CodeIgniter-এ URI Routing কাস্টমাইজেশন অ্যাপ্লিকেশনের কার্যকারিতা বাড়ায় এবং ব্যবহারকারীর জন্য SEO-বান্ধব URL তৈরি করতে সহায়ক। Custom Routes, Route Parameters, এবং Named Routes ব্যবহার করে আপনি অ্যাপ্লিকেশনকে আরও সংগঠিত এবং ব্যবহারযোগ্য করতে পারেন।
Read more